package co.edu.usbcali.pqr.dataaccess.dao;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

import co.edu.usbcali.pqr.dataaccess.api.HibernateDaoImpl;
import co.edu.usbcali.pqr.modelo.MotivoSolicitud;


/**
 * A data access object (DAO) providing persistence and search support for
 * MotivoSolicitud entities. Transaction control of the save(), update() and
 * delete() operations can directly support Spring container-managed
 * transactions or they can be augmented to handle user-managed Spring
 * transactions. Each of these methods provides additional information for how
 * to configure it for the desired type of transaction control.
 *
 * @see lidis.MotivoSolicitud
 */
@Scope("singleton")
@Repository("MotivoSolicitudDAO")
public class MotivoSolicitudDAO extends HibernateDaoImpl<MotivoSolicitud, Long>
    implements IMotivoSolicitudDAO {

	private static final Logger log = LoggerFactory.getLogger(MotivoSolicitudDAO.class);
    @Resource
    private SessionFactory sessionFactory;

    public static IMotivoSolicitudDAO getFromApplicationContext(
        ApplicationContext ctx) {
        return (IMotivoSolicitudDAO) ctx.getBean("MotivoSolicitudDAO");
    }
    
    @SuppressWarnings("unchecked")
   	@Override
   	public Long existeDescripcionMotivoSol(String pDescripcion) throws Exception {
   		Long cant = 0L;
   			try {
   			Query query = getSession().getNamedQuery("existe_descripcion_motivo_solicitud");
   			query.setParameter("pDescripcion", pDescripcion);
   			List<Long> lista = query.list();

   			if (lista!=null) {
   				cant =lista.get(0);
   			}
   			
   		} catch (Exception e) {
   			log.error(e.getMessage());
   			throw e;
   		}
   		return cant;

   	}
}
